package com.wits.platform.service;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.wits.platform.common.constants.SysTabConstants;
import com.wits.platform.dao.SysTabDDao;
import com.wits.platform.dao.SysTabHDao;
import com.wits.platform.entity.SysTabD;
import com.wits.platform.entity.SysTabDPK;
import com.wits.platform.entity.SysTabH;

@Component
public class SysTabService extends BaseService<SysTabH,String>{

	@Resource
	private SysTabDDao sysTabDDao;
	
	private SysTabHDao sysTabHDao;
	
	@Resource
	public void setSysTabHDao(SysTabHDao sysTabHDao) {
		this.baseDao=sysTabHDao;
		this.sysTabHDao = sysTabHDao;
	}

	private static List<SysTabD> langTypes;
	
	private static List<SysTabD> tnfs;
	

	/**
	 * 
	 * 获得所有启用的【部门类型】
	 * @param locale
	 * @return
	 */
	public List<SysTabD> getEnabledDeptTypes(String locale){
		return sysTabDDao.findEnabledByLangType(SysTabConstants.SYSTAB_H_DEPT_TYPE,locale);
	}
	
	/**
	 * 获得所有启用的【职称】
	 * @param locale
	 * @return
	 */
	public List<SysTabD> getEnabledEmpTitles(String locale){
		return sysTabDDao.findEnabledByLangType(SysTabConstants.SYSTAB_H_EMP_TITLE,locale);
	}
	
	/**
	 * 获得所有启用的【员工属性】
	 * @param locale
	 * @return
	 */
	public List<SysTabD> getEnabledEmpTypes(String locale){
		return sysTabDDao.findEnabledByLangType(SysTabConstants.SYSTAB_H_EMP_TYPE,locale);
	}
	
	/**
	 * 获得所有启用的语言码
	 * @return
	 */
	public List<SysTabD> getEnabledLangTypes(){
		if(langTypes==null || langTypes.size()==0){
			langTypes=sysTabDDao.findEnabled(SysTabConstants.SYSTAB_H_LANG_TYPE);
		}
		return langTypes;
	}
	
	/**
	 * 获得所有启用的是否
	 * @return
	 */
	public List<SysTabD> getEnabledTnfs(){
		if(tnfs==null || tnfs.size()==0){
			tnfs=sysTabDDao.findEnabled(SysTabConstants.SYSTAB_H_TNF);
		}
		return tnfs;
	}


	public List<SysTabD> findTabDByThId(String thId) {
		return sysTabDDao.findTabDByThId(thId);
	}

	public void save(SysTabH command, List<SysTabD> tabDList) {
		sysTabHDao.save(command);
		sysTabDDao.executeUpdate("delete from SysTabD where id.thId=?1",command.getThId());
		for(SysTabD tabD : tabDList){
			tabD.setId(new SysTabDPK(command.getThId(),tabD.getTdId()));
		}
		sysTabDDao.save(tabDList);
	}

	@Override
	public void deleteInBatch(List<String> idList) {
		sysTabDDao.executeUpdate("delete from SysTabD where id.thId in(?1)",idList);
		sysTabHDao.executeUpdate("delete from SysTabH where thId in(?1)", idList);
	}
	
}
